This invention relates to the field of computer systems. More particularly, a system and method are provided for reducing the overhead associated with memory allocation operations.
In multi-tasking computer systems, the amount of memory used by each task must be controlled. Without appropriate controls on memory allocation, a misbehaving task could appropriate large amounts of memory, thereby limiting the amount available to other tasks.
In many systems, each time a task requests additional memory, a determination is made as to how much memory is already allocated to the task. If its quota is exceeded, the new request may be denied.
However, determining a task's current allocation each time it requests additional memory creates significant overhead, which can degrade system performance. In particular, each time a task requests an allocation of memory from a shared area (e.g., a heap), several operations are required. Illustratively, a pointer separating allocated from unallocated space must be advanced, a test must be run to determine if a memory boundary was reached, the allocated area must be returned to the requester and a determination must be made as to whether the additional allocation would exceed the requestor's quota.
If this determination could be avoided for a substantial number of memory allocations, the cost of performing the allocations would decrease significantly. Thus, there is a need for a method of allocating memory to a task in a multi-tasking system without checking for the task's current allocation each time it requests additional memory.